package com.itheima.controller;


import cn.itheima.health.service.OrderSettingService;
import com.itheima.constant.MessageConstant;
import com.itheima.healt.entlty.Result;
import com.itheima.pojo.OrderSetting;
import com.itheima.utils.DateUtils;
import com.itheima.utils.POIUtils;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController   // @   固定写法：    RestController     控制 是相应Js 格式  区别于 普通的 @Controller
@RequestMapping("/ordersetting")    //  RequestMapping  ： 请求映射
public class OrderSettingController {
    @Reference //参照   dubbo的包
    private  OrderSettingService orderSettingService;


    @RequestMapping("/findOrderSettingByDate.do")
    public Result findOrderSettingByDate(@RequestParam("year") int year , @RequestParam("month") int month){
        try{
            List<Map>  listMap  = orderSettingService.findOrderSettingByDate(year,month);

            return  new Result(true, MessageConstant.QUERY_ORDERSETTING_SUCCESS,listMap);
        } catch (Exception e) {
            e.printStackTrace();
            return  new Result(true, MessageConstant.QUERY_ORDERSETTING_FAIL);
        }
    }


    @RequestMapping("/updateOrderSettingData.do")
    public Result updateOrderSettingData(@RequestParam("dateparam") String dateparam , @RequestParam("num") int num){
        try{
          orderSettingService.updateOrderSettingData(dateparam,num);

            return  new Result(true, MessageConstant.EDIT_ORDERSETTING_SUCCESS);
        } catch (Exception e) {
            e.printStackTrace();
            return  new Result(true, MessageConstant.EDIT_ORDERSETTING_SUCCESS);
        }
    }

    @RequestMapping("/importOrderSettings.do") //  RequestParam ： 请求参数  MultipartFile: 多部分文件
    public Result importOrderSettings(@RequestParam("excelFile") MultipartFile file) {
        try {
            //先使用根据类中的方法 校验 传入的文件是否是excel 文件
            POIUtils.checkFile(file);
            //        创建一个 Array数组集合 用于封装excel 里面的数据
            List<OrderSetting> orderSettingsList = new ArrayList<OrderSetting>();
            //使用工具类的方法 .readExcel 读取excel 文件
            List<String[]> list = POIUtils.readExcel(file);
            //遍历List集合
            for (String[] string : list) {
                //创建  OrderSetting 对象，需要用到里面的 .setOrderDate  用于设置  Date orderDate;//预约设置日期
                OrderSetting orderSetting = new OrderSetting();
                //循环遍历设置 预约设置日期    调用DateUtils工具类中的 parseString2Date 方法 解析 excel表格中的数据
                orderSetting.setOrderDate(DateUtils.parseString2Date(string[0], "yyyy/MM/dd"));

                orderSetting.setNumber(Integer.parseInt(string[1]));

                orderSettingsList.add(orderSetting);
            }
            //将预约数据保存在数据库中
            orderSettingService.importOrderSettings(orderSettingsList);
            return new Result(true, MessageConstant.UPLOAD_SUCCESS);
        } catch (IOException e) {
            e.printStackTrace();
            return new Result(false, MessageConstant.PIC_UPLOAD_FAIL);
        }
    }

}
